package com.anyext.storage.mapping;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.Map;

public interface BeanWrapper {

	public Class<?> getBeanClass();

	public Map<String, PropertyDescriptor> getPropertyDescriptors();

	public Object getValue(Object beanInstance, String propertyName);

	public Object getValueUnderProxy(Object beanInstance, String propertyName);

	public void setValue(Object beanInstance, String propertyName, Object... value);

	public void setValueUnderProxy(Object beanInstance, String propertyName, Object... value);

	public boolean hasReadMethod(String propertyName);

	public Method getReadMethod(String propertyName);

	public boolean hasWriteMethod(String propertyName);

	public Method getWriteMethod(String propertyName);

	public boolean hasProperty(String propertyName);

	public Class<?> getPropertyType(String propertyName);

}
